# Python property()函数：定义属性
class CLanguage:
    # 构造函数
    def __init__(self, name):
        self.name = name
    
    # 设置 name 属性值的函数
    def setname(self, name):
        self.name = name
    
    # 访问 name 属性值的函数
    def getname(self):
        return self.name
    
    # 删除 name 属性值的函数
    def delname(self):
        self.name = "xxx"
    
    # 为 name 属性配置 property() 函数
    #name = property(getname, setname, delname, '指明出处') # RecursionError: maximum recursion depth exceeded

clang = CLanguage("C语言中文网")
# 获取 name 属性值
print(clang.getname())
# 设置 name 属性值
clang.setname("Python教程")
print(clang.getname())
# 删除 name 属性值
clang.delname()
print(clang.getname())
print()

class CLanguage:
    # 构造函数
    def __init__(self, n):
        self.__name = n
    
    # 设置 name 属性值的函数
    def setname(self, n):
        self.__name = n
    
    # 访问 name 属性值的函数
    def getname(self):
        return self.__name
    
    # 删除 name 属性值的函数
    def delname(self):
        self.__name = "xxx"
    
    # 为 name 属性配置 property() 函数
    name = property(getname, setname, delname, '指明出处')

# 调取说明文档的2种方式
#print(CLanguage.name__doc__)
help(CLanguage.name)
clang = CLanguage("C语言中文网")
# 调用 getnmae() 方法
print(clang.name)
# 调用 setname() 方法
clang.name = "Python教程"
print(clang.name)
# 调用 delname() 方法
del clang.name
print(clang.name)
